<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  

  
  <title>xiaxuchen的博客</title>
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  <meta name="description" content="Activity生命周期探索 一、正常情况下的生命周期1. 各方法的说明   生命周期方法 是否可见 用户可见 描述    onCreate 否 否 表示Activity正在创建，可以做一些初始化的工作   onRestart 是 否 当Activity从不可见变为可见即调用，如创建新的Activity又返回、回到桌面又返回页面   onStart 是 否 表示Activity已经被启动了，Act">
<meta property="og:type" content="article">
<meta property="og:title" content="xiaxuchen的博客">
<meta property="og:url" content="http://yoursite.com/2020/08/07/android/Activity%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F%E6%8E%A2%E7%B4%A2/index.html">
<meta property="og:site_name" content="xiaxuchen的博客">
<meta property="og:description" content="Activity生命周期探索 一、正常情况下的生命周期1. 各方法的说明   生命周期方法 是否可见 用户可见 描述    onCreate 否 否 表示Activity正在创建，可以做一些初始化的工作   onRestart 是 否 当Activity从不可见变为可见即调用，如创建新的Activity又返回、回到桌面又返回页面   onStart 是 否 表示Activity已经被启动了，Act">
<meta property="og:locale" content="en_US">
<meta property="og:image" content="https://img-blog.csdn.net/2018062722203023?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3poYW5neHVlY2hhb18=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70">
<meta property="og:image" content="c:/Users/xxc、/AppData/Roaming/Typora/typora-user-images/image-20200118180613221.png">
<meta property="article:published_time" content="2020-08-07T15:08:01.235Z">
<meta property="article:modified_time" content="2020-07-19T10:36:52.808Z">
<meta property="article:author" content="xiaxuchen">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://img-blog.csdn.net/2018062722203023?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3poYW5neHVlY2hhb18=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70">
  
    <link rel="alternate" href="./atom.xml" title="xiaxuchen的博客" type="application/atom+xml">
  
  
    <link rel="icon" href="/favicon.png">
  
  
    <link href="//fonts.googleapis.com/css?family=Source+Code+Pro" rel="stylesheet" type="text/css">
  
  
<link rel="stylesheet" href="./css/style.css">

<meta name="generator" content="Hexo 5.0.0"></head>

<body>
  <div id="container">
    <div id="wrap">
      <header id="header">
  <div id="banner"></div>
  <div id="header-outer" class="outer">
    <div id="header-title" class="inner">
      <h1 id="logo-wrap">
        <a href="./" id="logo">xiaxuchen的博客</a>
      </h1>
      
    </div>
    <div id="header-inner" class="inner">
      <nav id="main-nav">
        <a id="main-nav-toggle" class="nav-icon"></a>
        
          <a class="main-nav-link" href="./">Home</a>
        
          <a class="main-nav-link" href="./archives">Archives</a>
        
      </nav>
      <nav id="sub-nav">
        
          <a id="nav-rss-link" class="nav-icon" href="./atom.xml" title="RSS Feed"></a>
        
        <a id="nav-search-btn" class="nav-icon" title="Search"></a>
      </nav>
      <div id="search-form-wrap">
        <form action="//google.com/search" method="get" accept-charset="UTF-8" class="search-form"><input type="search" name="q" class="search-form-input" placeholder="Search"><button type="submit" class="search-form-submit">&#xF002;</button><input type="hidden" name="sitesearch" value="http://yoursite.com"></form>
      </div>
    </div>
  </div>
</header>
      <div class="outer">
        <section id="main"><article id="post-android/Activity生命周期探索" class="article article-type-post" itemscope itemprop="blogPost">
  <div class="article-meta">
    <a href="./2020/08/07/android/Activity%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F%E6%8E%A2%E7%B4%A2/" class="article-date">
  <time datetime="2020-08-07T15:08:01.235Z" itemprop="datePublished">2020-08-07</time>
</a>
    
  </div>
  <div class="article-inner">
    
    
    <div class="article-entry" itemprop="articleBody">
      
        <h3 id="Activity生命周期探索"><a href="#Activity生命周期探索" class="headerlink" title="Activity生命周期探索"></a>Activity生命周期探索</h3><p><img src="https://img-blog.csdn.net/2018062722203023?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3poYW5neHVlY2hhb18=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" alt="img"></p>
<h3 id="一、正常情况下的生命周期"><a href="#一、正常情况下的生命周期" class="headerlink" title="一、正常情况下的生命周期"></a>一、正常情况下的生命周期</h3><h4 id="1-各方法的说明"><a href="#1-各方法的说明" class="headerlink" title="1. 各方法的说明"></a>1. 各方法的说明</h4><table>
<thead>
<tr>
<th align="center">生命周期方法</th>
<th align="center">是否可见</th>
<th align="center">用户可见</th>
<th align="center">描述</th>
</tr>
</thead>
<tbody><tr>
<td align="center">onCreate</td>
<td align="center">否</td>
<td align="center">否</td>
<td align="center">表示Activity正在创建，可以做一些初始化的工作</td>
</tr>
<tr>
<td align="center">onRestart</td>
<td align="center">是</td>
<td align="center">否</td>
<td align="center">当Activity从不可见变为可见即调用，如创建新的Activity又返回、回到桌面又返回页面</td>
</tr>
<tr>
<td align="center">onStart</td>
<td align="center">是</td>
<td align="center">否</td>
<td align="center">表示Activity已经被启动了，Activity已经可见，但未出现在前台</td>
</tr>
<tr>
<td align="center">onResume</td>
<td align="center">是</td>
<td align="center">是</td>
<td align="center">此时Activity已出现在前台了</td>
</tr>
<tr>
<td align="center">onPause</td>
<td align="center">是</td>
<td align="center">否</td>
<td align="center">表示Activity正在停止，紧接着onStop会被调用，可以做一些存储数据、停止动画的工作</td>
</tr>
<tr>
<td align="center">onStop</td>
<td align="center">否</td>
<td align="center">否</td>
<td align="center">表示Activity即将停止，可以做一些较为重量级的回收工作，但不能太耗时</td>
</tr>
<tr>
<td align="center">onDestory</td>
<td align="center">否</td>
<td align="center">否</td>
<td align="center">表示Activity即将被销毁，可以做最终的资源回收</td>
</tr>
</tbody></table>
<h4 id="2-附加说明-了解即可"><a href="#2-附加说明-了解即可" class="headerlink" title="2. 附加说明(了解即可)"></a>2. 附加说明(了解即可)</h4><ol>
<li><p>第一次启动一个activity</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">graph LR</span><br><span class="line">   onCreate --&gt; onStart --&gt; onResume</span><br></pre></td></tr></table></figure>



</li>
</ol>
<ol start="2">
<li><p>打开activity然后切换回桌面：</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">graph LR</span><br><span class="line">onPause --&gt; condition&#123;Activity是否采用了透明主题&#125; -- NO --&gt; onStop</span><br></pre></td></tr></table></figure>
</li>
<li><p>当再次回到Activity时回调:</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">graph LR </span><br><span class="line">onRestart --&gt; onStart --&gt; onResume</span><br></pre></td></tr></table></figure>



</li>
</ol>
<ol start="4">
<li><p>当用户按下back</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">graph LR</span><br><span class="line">onPause --&gt; onStop --&gt; onDestroy</span><br></pre></td></tr></table></figure>



</li>
</ol>
<ol start="5">
<li>当Activity被销毁再次打开生命周期和第1点一样，只是生命周期</li>
<li>onCreate和onDestory是配对的，标识创建和销毁，onStart和onStop是配对的，标识Activity是否可见，随着设备的点亮和熄灭会多次触发，onResume和onPause是配对的，标识Activity是否在前台</li>
</ol>
<h4 id="3-问题"><a href="#3-问题" class="headerlink" title="3.问题"></a>3.问题</h4><ol>
<li><p>onResume和onPause一对方法与onStart和onStop非常相像，对我们来说有什么实质性的不同呢?</p>
<p>onResume和onPause是从用户是否可见方面回调，而后者是从Activity是否可见方面回调，意义不同</p>
</li>
<li><p>假设当前Activity A打开了一个新Activity B，那么B的onResume和A的onPause哪个先执行呢？</p>
<p>由源码看出Activity是先执行onPause然后在执行新的Activity的生命周期的</p>
</li>
</ol>
<h3 id="二、异常情况下的生命周期"><a href="#二、异常情况下的生命周期" class="headerlink" title="二、异常情况下的生命周期"></a>二、异常情况下的生命周期</h3><h4 id="1-系统状态改变"><a href="#1-系统状态改变" class="headerlink" title="1. 系统状态改变"></a>1. 系统状态改变</h4><p>当系统状态改变时会导致Activity的重新创建，如横竖屏的切换，当然我们可以阻止此行为</p>
<h4 id="2-系统资源不足"><a href="#2-系统资源不足" class="headerlink" title="2.系统资源不足"></a>2.系统资源不足</h4><p>​    当系统资源不足时，将会挑选优先级较低的Activity杀死释放资源</p>
<p>​    </p>
<p>​    Activity的优先级</p>
<ul>
<li><p>处于前台的Activity优先级最高</p>
</li>
<li><p>可见但非前台的Activity优先级次之，如当前开启一个对话框，Activity仍可见</p>
</li>
<li><p>后台Activity最低,已经被暂停了</p>
<h4 id="3-生命周期图"><a href="#3-生命周期图" class="headerlink" title="3. 生命周期图"></a>3. 生命周期图</h4></li>
</ul>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">graph TB</span><br><span class="line">     subgraph right</span><br><span class="line">        startRight(Activity) --&gt; create[onCreate] --&gt; onRestoreInstanceState</span><br><span class="line">    end</span><br><span class="line">    subgraph left</span><br><span class="line">        startLeft(Activity) --&gt; onSaveInstanceState --&gt; onDestory</span><br><span class="line">        onSaveInstanceState -- 重新创建 --&gt; create</span><br><span class="line">    end</span><br><span class="line">   </span><br></pre></td></tr></table></figure>



<p>Android系统在这个过程中自动为我们进行了一些数据的恢复，主要通过View的onRestoreInstanceState和onSaveInstanceState方法进行，其流程如下：</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">graph TB</span><br><span class="line">Activity --委托--&gt; window --委托--&gt; 顶层view --将保存数据以及恢复数据方法进行分发式调用--&gt;各个view</span><br></pre></td></tr></table></figure>

<h4 id="4-阻止因状态配置变化重新创建Activity"><a href="#4-阻止因状态配置变化重新创建Activity" class="headerlink" title="4. 阻止因状态配置变化重新创建Activity"></a>4. 阻止因状态配置变化重新创建Activity</h4><p>在AndroidManifest中配置configChanges属性，最常用的值为locale、orientation、keyboardHidden三个选项，分别为切换系统语言、横竖屏切换以及用户调出了键盘，多个值可用|间隔，当设置横竖屏切换时还有加上screenSize选项，因为屏幕大小也会变</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">&lt;activity android:name&#x3D;&quot;.MainActivity&quot;</span><br><span class="line">          android:configChanges&#x3D;&quot;orientation | screenSize&quot;&gt;</span><br><span class="line">          &lt;intent-filter&gt;</span><br><span class="line">              &lt;action android:name&#x3D;&quot;android.intent.action.MAIN&quot; &#x2F;&gt;</span><br><span class="line"></span><br><span class="line">              &lt;category android:name&#x3D;&quot;android.intent.category.LAUNCHER&quot; &#x2F;&gt;</span><br><span class="line">          &lt;&#x2F;intent-filter&gt;</span><br><span class="line">      &lt;&#x2F;activity&gt;</span><br></pre></td></tr></table></figure>

<p>重写onConfigurationChanged方法打印成功，其中有个小插曲，抛出<strong>android.util.SuperNotCalledException</strong>，原因是没有调用父类的方法</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">super</span>.onConfigurationChanged(newConfig);</span><br></pre></td></tr></table></figure>



<p><img src="C:\Users\xxc、\AppData\Roaming\Typora\typora-user-images\image-20200118180613221.png" alt="image-20200118180613221"></p>
<h3 id="三、-Activity启动模式"><a href="#三、-Activity启动模式" class="headerlink" title="三、 Activity启动模式"></a>三、 Activity启动模式</h3><p>​    主要分为standard、singleTop、singleTask、singleInstance几个方法</p>
<pre><code>#### 1. standard 标准模式</code></pre>
<p>​    系统默认的模式，每创建一个Activity都会将Activity放入<strong>默认的Activity栈</strong>中，当销毁一个Activity时将其栈顶元素栈中推出。当我们使用ApplicationContext去创建Activity会抛异常，因为ApplicationContext不知道默认的Activity栈，我们可以使用FLAG_ACTIVITY_NEW_TASK去打开，但这已经不是standard模式启动了</p>
<h4 id="2-singleTop"><a href="#2-singleTop" class="headerlink" title="2. singleTop"></a>2. singleTop</h4><p>​    在这种情况下如果新的Activity已经位于栈顶则复用Activity，其onNewIntent方法会被调用</p>
<h4 id="3-singleTask"><a href="#3-singleTask" class="headerlink" title="3. singleTask"></a>3. singleTask</h4><p>​    栈内复用，当栈中有该Activity就不会创建新的Activity，将该Activity提至栈顶，并调用onNewIntent方法</p>
<h4 id="4-singleInstance"><a href="#4-singleInstance" class="headerlink" title="4. singleInstance"></a>4. singleInstance</h4><p>​    加强版singleTask，该Acitivity会单独存在一个Activity中，除非该任务栈被销毁，否则一直不会创建新的Activity</p>
<h4 id="5-任务栈的配置"><a href="#5-任务栈的配置" class="headerlink" title="5. 任务栈的配置"></a>5. 任务栈的配置</h4><p>​    我们可以通过taskAffinity进行配置任务栈，默认情况下是应用的包名也就是默认任务栈</p>
<h4 id="6-Activity的flags"><a href="#6-Activity的flags" class="headerlink" title="6. Activity的flags"></a>6. Activity的flags</h4><ul>
<li>（<strong>常用</strong>）FLAG_ACTIVITY_NEW_TASK 这个标志位为指定singleTask方式启动 </li>
<li>FLAG_ACTIVITY_SINGLE_TOP 指定singleTop方式启动</li>
<li>FLAG_ACTIVITY_CLEAR_TOP 位于他上面的Activity都会出栈</li>
<li>FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS 具有这个标记的Activity不会出现在历史记录中</li>
</ul>
<h3 id="四、-IntentFilter的匹配规则"><a href="#四、-IntentFilter的匹配规则" class="headerlink" title="四、 IntentFilter的匹配规则"></a>四、 IntentFilter的匹配规则</h3><p>Activity显示调用需要包名和类名，其中包名通过context获取，故我们不需直接给出包名，如下即可</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">startActivity(new Intent(this,MainActivity.class));</span><br></pre></td></tr></table></figure>





<p>Activity隐式调用需要在Activity标签下配置intent-filter标签，其有action、category、data等过滤信息，为了匹配过滤列表，需要同时匹配三者，<strong>注意intent-filter可以配置多个</strong>，intent只要能匹配一组intent-filter即可,其中每个intent-filter必须包括android.intent.category.DEFAULT</p>
<h4 id="1-action匹配规则"><a href="#1-action匹配规则" class="headerlink" title="1. action匹配规则"></a>1. action匹配规则</h4><p>​    action是一个字符串，系统预定义了一些字符串，我们也可以自定义，action的匹配规则是必须能够和过滤规则中的action一致，一个intent-filter可以有多个action，那么只需要与其中一个匹配即可</p>
<h4 id="2-category匹配规则"><a href="#2-category匹配规则" class="headerlink" title="2. category匹配规则"></a>2. category匹配规则</h4><p>​    系统预定义了一些category，我们也可以自定category，category需要intent中的所有category都在同一个intent-filter中定义，都能从中找到即可匹配，当然intent可以不给category。<strong>注意：intent-filter必须配置一个android.intent.category.DEFAULTandroid.intent.category.DEFAULT</strong></p>
<h4 id="3-data匹配规则"><a href="#3-data匹配规则" class="headerlink" title="3. data匹配规则"></a>3. data匹配规则</h4><p>​    data的规则和action类似，如果过滤规则中定义了data，那么intent中也要定义匹配的data,data的格式：</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">&lt;data</span><br><span class="line">                   android:scheme&#x3D;&quot;string&quot;</span><br><span class="line">                   android:host&#x3D;&quot;string&quot;</span><br><span class="line">                   android:port&#x3D;&quot;8080&quot;</span><br><span class="line">                   android:path&#x3D;&quot;&#x2F;&quot;</span><br><span class="line">                   android:pathPattern&#x3D;&quot;string&quot;</span><br><span class="line">                   android:pathPrefix&#x3D;&quot;&#x2F;&quot;</span><br><span class="line">                   android:mimeType&#x3D;&quot;string&quot;&gt;&lt;&#x2F;data&gt;</span><br></pre></td></tr></table></figure>

<p>​    data 的结构(各部分都需要满足格式要求)</p>
<p>​    data分为URI和mimetype两部分，其中mimetype表示媒体类型，URI表示路径</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&lt;scheme&gt;:<span class="comment">//&lt;host&gt;:&lt;port&gt;/[path]|[pathPrefix]|[pathPattern]</span></span><br></pre></td></tr></table></figure>

<p>​    其中path、pathPrefix、pathPattern表示路径、路径前缀、路径格式(可以包含通配符)</p>
<h4 id="4-避免Activity隐式跳转失败"><a href="#4-避免Activity隐式跳转失败" class="headerlink" title="4. 避免Activity隐式跳转失败"></a>4. 避免Activity隐式跳转失败</h4><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#x2F;&#x2F; 通过PackageManager进行查询是否匹配</span><br><span class="line">getPackageManager().resolveActivity(intent,PackageManager.MATCH_DEFAULT_ONLY);</span><br><span class="line">getPackageManager().queryIntentActivities(intent,PackageManager.MATCH_DEFAULT_ONLY)</span><br></pre></td></tr></table></figure>










      
    </div>
    <footer class="article-footer">
      <a data-url="http://yoursite.com/2020/08/07/android/Activity%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F%E6%8E%A2%E7%B4%A2/" data-id="ckdkdagt40000voutbbkpdqui" class="article-share-link">Share</a>
      
      
    </footer>
  </div>
  
    
<nav id="article-nav">
  
    <a href="./2020/08/07/android/Android%E6%B2%89%E6%B5%B8%E5%BC%8F%E7%8A%B6%E6%80%81%E6%A0%8F/" id="article-nav-newer" class="article-nav-link-wrap">
      <strong class="article-nav-caption">Newer</strong>
      <div class="article-nav-title">
        
          (no title)
        
      </div>
    </a>
  
  
</nav>

  
</article>

</section>
        
          <aside id="sidebar">
  
    

  
    

  
    
  
    
  <div class="widget-wrap">
    <h3 class="widget-title">Archives</h3>
    <div class="widget">
      <ul class="archive-list"><li class="archive-list-item"><a class="archive-list-link" href="./archives/2020/08/">August 2020</a></li></ul>
    </div>
  </div>


  
    
  <div class="widget-wrap">
    <h3 class="widget-title">Recent Posts</h3>
    <div class="widget">
      <ul>
        
          <li>
            <a href="./2020/08/07/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B9%8B%E9%93%BE%E8%A1%A8/">(no title)</a>
          </li>
        
          <li>
            <a href="./2020/08/07/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B9%8B%E6%A0%88%E4%B8%8E%E9%98%9F%E5%88%97/">(no title)</a>
          </li>
        
          <li>
            <a href="./2020/08/07/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B9%8B%E6%95%B0%E7%BB%84/">(no title)</a>
          </li>
        
          <li>
            <a href="./2020/08/07/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/%E6%80%9D%E7%BB%B4%E5%AF%BC%E5%9B%BE/">(no title)</a>
          </li>
        
          <li>
            <a href="./2020/08/07/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/SpringBoot%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/">(no title)</a>
          </li>
        
      </ul>
    </div>
  </div>

  
</aside>
        
      </div>
      <footer id="footer">
  
  <div class="outer">
    <div id="footer-info" class="inner">
      &copy; 2020 xiaxuchen<br>
      Powered by <a href="http://hexo.io/" target="_blank">Hexo</a>
    </div>
  </div>
</footer>
    </div>
    <nav id="mobile-nav">
  
    <a href="./" class="mobile-nav-link">Home</a>
  
    <a href="./archives" class="mobile-nav-link">Archives</a>
  
</nav>
    

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>


  
<link rel="stylesheet" href="./fancybox/jquery.fancybox.css">

  
<script src="./fancybox/jquery.fancybox.pack.js"></script>




<script src="./js/script.js"></script>




  </div>
</body>
</html>